package com.huiyun.project.im.core.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.huiyun.project.im.common.auth.UserPrincipal;
import com.huiyun.project.im.core.dto.ImUserDto;
import com.huiyun.project.im.entity.ImTenant;
import com.huiyun.project.im.entity.ImUser;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author bogon
 * @since 2020-07-17
 */
public interface IImUserService extends IService<ImUser> {


    /**
     * 关联查询出用户的详细信息,登陆后去获取用户详情
     *
     * @param userid
     * @return
     */
    UserPrincipal findPrincipal(String userid);


    /**
     * 新增或更新账号
     *
     * @param list
     * @return
     */
    List<ImUser> saveOrUpdateTenantUser(List<ImUser> list);


    /**
     * 新增或更新账号(c端用户)
     *
     * @return
     */
    void saveOrUpdateUser(ImTenant imTenant, ImUser imUser);


    /**
     * 根据用户名查询
     *
     * @param userName
     * @return
     */
    ImUser findByUsername(String userName);


    /**
     * 获取指定客服组的客服列表
     *
     * @param imTenantId
     * @param userOrgId
     * @return
     */
    List<ImUser> getCsList(String imTenantId, String userOrgId);

    /**
     * 修改子账号信息
     *
     * @return
     */
    void updateUserCs(Integer grantType,ImUser imUser);

    /**
     * 根据业务系统 bid 和租户id 逻辑删除im账户
     *
     * @return
     */
    List<String> deleteTenantUserByBid(List<String> list, String imTenantId);

}
